package com.common.base.widget

import android.content.Context
import android.graphics.Typeface
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatTextView
import com.common.base.R
import com.common.base.utils.AppUtils


/**
 *
 * 作者：sosou
 *
 * 版本：1.0
 *
 * 创建日期：1/2/2023
 *
 * 描述：
 *
 * 修订历史：
 *
 */
open class CustomTextView : AppCompatTextView {
    /**
     * 构造函数
     *
     * @param context 上下文对象
     */
    constructor(context: Context) : super(context) {
        initView(context, null)
    }

    /**
     * 构造函数
     *
     * @param context 保存对象
     * @param attrs   属性表
     */
    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
        initView(context, attrs)
    }

    /**
     * 构造函数
     *
     * @param context      上下文对象
     * @param attrs        属性表
     * @param defStyleAttr 样式ID
     */
    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
        context,
        attrs,
        defStyleAttr
    ) {
        initView(context, attrs)
    }

    /**
     * 设置文字属性
     *
     * @param context 保存对象
     * @param attrs   属性
     */
    fun initView(context: Context, attrs: AttributeSet?) {
        // 属性不能为空
        if (attrs == null) {
            throw RuntimeException(resources.getString(R.string.attr_not_null))
        }

        // 设置属性
        val typed = context.obtainStyledAttributes(attrs, R.styleable.CustomTextView)
        setTypeface(typed.getInt(R.styleable.CustomTextView_cut_text_style, 0))

        // 回收属性表
        typed.recycle()
        includeFontPadding = false
    }

    /**
     * 设置文字字体（判断文字位置。设置文字字体）
     *
     * @param textStyle 文字
     */

    fun setTypeface(textStyle: Int) {
        typeface = when (textStyle) {
            1 -> loadTypeface("font/DINCondensedBold.ttf", Typeface.DEFAULT_BOLD)
            2 -> loadTypeface("font/DINCondensedBold.ttf", Typeface.DEFAULT)
            else -> loadTypeface("font/DINCondensedBold.ttf", Typeface.DEFAULT)
        }
    }

    private fun loadTypeface(fontPath: String,mTypeface:Typeface): Typeface {
        return try {
            Typeface.createFromAsset(AppUtils.getContext().assets, fontPath)
        } catch (e: RuntimeException) {
            // 如果加载失败，返回默认字体
            mTypeface
        }
    }
}